// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Mostbet Azerbaycanda Hokkey Mərcləri və Bonuslar – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Mostbet Azerbaycanda Hokkey Mərcləri və Bonuslar

Mostbet-də Hokkey Mərcləri – Geniş Seçim və Sərfəli Şərtlər

Mostbet, Azərbaycan istifadəçiləri üçün hokkey mərcləri sahəsində etibarlı və funksional platforma təklif edir. Burada həm beynəlxalq çempionatlar, həm də yerli liqalar üzrə geniş bir hadisələr siyahısı ilə qarşılaşacaqsınız. Əməliyyatları başlamaq üçün https://mostbet-apk-azerbaycan.com/ ünvanına daxil olmaq kifayətdir. Bukmeker kontoru həm təcrübəli, həm də yeni başlayan mərcçilər üçün intuitiv interfeys və cəlbedici bonuslar təqdim edir.

Mostbet-də Hokkey Üzrə Mərc Növləri

Mostbet platformasında hokkey üzrə mərc etmək üçün onlarla müxtəlif seçim mövcuddur. Əsas mərc növlərinə matçın qalibi, cərimə zərbələri, ümumi qol sayı və xüsusi oyunçu statistikaları daxildir. Bukmeker, NHL, KHL, IIHF Dünya Çempionatı kimi nüfuzlu turnirləri, həmçinin Azərbaycan çempionatının oyunlarını da öz əhatəsinə alır. Hər bir hadisə üçün yüksək əmsallar və real vaxtda dəyişən rəqəmlər təqdim olunur.

Mostbet Canlı Mərcləri – Hokkeydə Real Təcrübə

Mostbet-in canlı mərc bölməsi hokkey həvəskarları üçün xüsusi maraq doğurur. Matç davam edərkən siz oyunun gedişatına uyğun olaraq dinamik əmsallarla mərc edə bilərsiniz. Canlı yayım xidməti də çox vaxt mövcud olur ki, bu da qərarlarınızı daha dəqiq verməyə imkan yaradır. Bu rejimdə mərc edərkən qol, cərimə, hətta dövrənin nəticəsi kimi detallara da mərc etmək olar.

Mostbet

Mostbet Bonusları Hokkey Mərcçiləri Üçün

Mostbet yeni qeydiyyatdan keçən və daimi müştəriləri üçün müxtəlif bonus proqramları təklif edir. Hokkey mərcləri də bu bonuslardan istifadə etmək üçün uyğundur. Ən populyar təkliflərə ilk depozit bonusu, ekspress günü artırılmış əmsalları və risk-siz mərc daxildir. Hər bir bonusun öz şərtləri və mərc tələbləri var, onları istifadə etməzdən əvvəl diqqətlə öyrənmək məsləhətdir.

  • Xoş gəldiniz bonusu: İlk depozitinizə görə 100%-ə qədər bonus əldə edin.
  • Ekspress günü: Seçilmiş hokkey matçlarında kombinə mərclər üçün artırılmış gəlir.
  • Risk-siz mərc: Müəyyən bir mərc növündə məğlub olmaq halında, məbləğ hesabınıza geri qaytarılır.
  • Loyalty proqramı: Daimi mərc etdikcə topladığınız xalları real pul və ya fırlanmalara dəyişə bilərsiniz.
  • Təqvim aksiyaları: Böyük hokkey turnirləri zamanı xüsusi yarışlar və mükafatlar.

Mostbet Mobil Tətbiqi ilə Hokkeyə Mərc

Mostbet-in mobil tətbiqi Android və iOS cihazlar üçün mövcuddur və hokkey mərcləri üçün tam funksionallıq təmin edir. Tətbiq vasitəsilə hesabınıza daxil ola, depozit yatıra, canlı mərclər edə və nəticələri izləyə bilərsiniz. Interfeys sürətli və yığcamdır, bu da matçlar zamanı tez qərar qəbul etməyə kömək edir. Tətbiqi rəsmi saytdan endirmək olar və o, daimi yenilənmələr alır.

Xüsusiyyət Mobil Tətbiqdə Faydası Hokkey Mərcçisinə Üstünlüyü
Canlı Mərc Hər yerdən matçı izləyib mərc etmək Oyun gedişatında ani qərarlar
Push-Bildirişlər Matç başlanğıcı və nəticələr barədə məlumat Heç bir fürsəti qaçırmamaq
Sürətli Ödəniş Bir neçə kliklə depozit və çıxarış Vaxta qənaət və rahatlıq
Statistika Komanda və oyunçu məlumatlarına dərhal çıxış İnformasiya əsasında mərc strategiyası
Çoxlu Hesab Bir neçə hesab arasında sürətli keçid Müxtəlif strategiyaları eyni anda sınamaq

Mostbet-də Mərc Strategiyaları və Təhlili

Hokkeydə uğurlu mərc etmək üçün təkcə şans kifayət deyil. Mostbet platforması mərc qərarınızı dəstəkləmək üçün zəngin statistik məlumatlar və təhlil alətləri təqdim edir. Hər bir komandanın son oyunları, oyunçuların forması, baş-başa görüşlərin tarixçəsi kimi məlumatlara asanlıqla baxmaq olar. Bu məlumatları öyrənmək, daha dəqiq proqnozlar verməyə kömək edəcək.

Mostbet

Mostbet-in təklif etdiyi məlumat bazasından istifadə edərək, siz öz hokkey mərc strategiyanızı qura bilərsiniz. Məsələn, zəif müdafiəsi olan komandaların oyunlarında ümumi qol sayına mərc etmək, ya da cərimə zərbələrində uğurlu olan komandaya fərdi mərc etmək daha sərfəli ola bilər. Əhəmiyyətli olan, məlumatları nəzərə alaraq, emosiyalardan uzaq qərarlar qəbul etməkdir.

Mostbet-də Hesabın Təhlükəsizliyi və Dəstək

Mostbet istifadəçilərinin şəxsi məlumatlarının və maliyyə əməliyyatlarının təhlükəsizliyinə böyük əhəmiyyət verir. Platforma müasir şifrələmə texnologiyalarından istifadə edir. Bundan əlavə, iki faktorlu autentifikasiya kimi əlavə təhlükəsizlik tədbirləri də mövcuddur. Hər hansı bir sual və ya problem yaranarsa, 7/24 fəaliyyət göstərən dəstək xidməti Azərbaycan dilində də kömək göstərir.

Hokkey mərcləri dünyası dinamik və hərəkətlidir. Mostbet bu dünyada etibarlı bir tərəfdaş kimi, Azərbaycanlı həvəskarlara geniş bazar, rəqabətli əmsallar və istifadəçi dostu mühit təqdim edir. Platformanın imkanlarından düzgün istifadə etməklə, idmana olan marağınızı daha da dərinləşdirə və mərc təcrübənizi daha mənalı edə bilərsiniz.

Design and Develop by Ovatheme